Splunk に Forwarder がいっぱいあったので整理した
Splunkではエージェント型のソフトウェアをデバイスにインストールしてデータを送信することができます。
このエージェントは Forwarder と呼ばれるのですが、Splunkのマニュアルを読み進めていると、Forwarder ってつく名前が色々出てきて何がなんだか分からなくなりがちです。
そしてぼくも混乱しました。
そこで、Forwarder あるいはForwarderぽいやつ
を整理してみました。
まず、
Forwarder あるいはForwarderぽいやつ
をリストしてみます。
- Heavy Forwarder
- Universal Forwarder
- Light Forwarder
- Intermediate Forwarder
- Deployment Server
いきなりまとめ
整理した結果になります。
用語 | 概要 |
---|---|
Universal Forwarder | データ転送を行うためのエージェント。Universal Forwarder のインストーラを使う。軽量で最適化されているため、通常はこれ。 |
Heavy Forwarder | データ転送を行うためのエージェント。Splunk Enterprise のインストーラを使う。特殊な要件がある時にこれを使う。 |
Light Forwarder | データ転送を行うためのエージェント。現バージョンでは使われていない。 |
Intermediate Forwarder | データ転送を中継する役割として構成された中継フォワーダー。Universal Forwarder でも Heavy Forwarder でも設定可能。 |
Deployment Server | Forwarder を管理するために構築するサーバー。Splunk Enterprise のインストーラを使う。同じサーバーを Forwarder とすることはできない |
それぞれの補足説明については以下にまとめています。
※以降に紹介する公式ドキュメントの参考URLは最新バージョンか利用しているバージョンに合わせてご確認ください。
Universal Forwarder
専用のインストーラー(データ転送に特化した軽量なエージェント)を使い、データの転送を行います。 UIは無く、機能もHeavy Forwarderに比較して抑えられているため、軽量でシンプルな処理を行います。
構成イメージになります。Indexer部分はSplunk Cloudだったり、Splunk Enterpriseだったりします。
一般的なデータ転送においては、Heavy Forwarderに比べ、エージェントのワークロード、アーキテクチャの複雑性、管理のしやすさの観点でUniversal Forwarderに優位性が高いので、こちらを採用することが推奨されています。
独自プロトコルのTCPか、HTTPプロキシ環境の場合はHTTPOUTという機能でHTTPまたはHTTPS経由でデータを送信することができます。
参考情報:
https://docs.splunk.com/Documentation/SplunkCloud/latest/Data/UsetheHTTPEventCollector
Splunkのブログでも、ほとんどのユースケースにおいて、Universal Forwarderを使うように記載されています。
インストール動画:
https://www.splunk.com/en_us/download/splunk-enterprise/thank-you-enterprise.html
ユニバーサル vs ヘビー:
https://www.splunk.com/ja_jp/blog/tips-and-tricks/universal-or-heavy-that-is-the-question.html
参考情報:
https://docs.splunk.com/Documentation/Forwarder/9.2.0/Forwarder/Deploy
Splunk Cloudへのデータ送信は、以下の方法でのデータ送信になります。
- tcpout (Outbound tcp/9997)
- httpout (Outbound HTTPS 443)
通常Forwarderでは、tcpout(tcp/9997)宛にデータを送信するように使われますが、HTTPプロキシを経由させないと外に出れない環境の場合も多いかと思います。
httpoutはHTTPプロトコルで通信(経由)させるために利用することができます。
Splunk Cloudの環境ではHTTPS 443宛にデータを送信することが可能です。
ちなみに Splunk では前者のtcpoutをS2Sプロトコル、後者のhttpoutをHEC (HTTP Event Collector)と呼ばれたりもします。
これも覚えておくとドキュメントを呼んだりする上で役に立ちます。
Splunk Enterpriseへのデータ送信の際も、tcpoutとhttpoutの2種類となりますが、扱えるポートなどは柔軟に変更することが可能となります。
参考情報:
https://docs.splunk.com/Documentation/Forwarder/9.2.0/Forwarder/Configureforwardingwithoutputs.conf
またSplunk Cloudへデータを送信する際は、Universal Forwarder Credential PackageをSplunk Cloudからダウンロードしてデータ送信するデバイス上に保存する必要があります。
Universal Forwarderのインストール時に必要な手順になりますので、注意が必要です。
参考情報:
https://docs.splunk.com/Documentation/Forwarder/9.2.0/Forwarder/ConfigSCUFCredentials
Heavy Forwarder
Splunk Enterprise のインストーラと同じものを使い、Forwarder としてデータの転送を行います。
UIを持たせることができ、データのマスク処理やイベントの分割処理を行ってからIndexerに送ることが可能で、Indexer側の処理を肩代わりして負荷を軽減する構成をとることができます。
Heavy Forwarder上でSplunk Enterpriseと同じような検索をすることも可能です。
Splunk Cloudを利用していて、Heavy Forwarderを構成したい場合は、インストール時に別途ライセンスの入力が必要になるので、あらかじめSplunkサポートからライセンスを入手する必要があります。
インストール方法と設定についてはこちらの公式ブログでも紹介されていますので、Heavy Forwarderを構成したい場合はこちらを見ながらセットアップできます。
参考情報:
https://docs.splunk.com/Documentation/Splunk/9.2.0/Forwarding/ConfigureaforwardertouseaSOCKSproxy
Splunk Cloud/Splunk Enterpriseへのデータ送信は、以下の方法でのデータ送信になります。
- tcpout (Outbound tcp/9997)
- SOCKS5 Proxy
※Heavy Forwarderから各(Splunk Cloud)、(Splunk Enterprise)への送信ポートについてはHTTPによるデータ送信はサポートされていないので注意が必要です。
その代わりにSOCKS5での送信が可能です。
Light Forwarder
軽量化のためHeavy Forwarderの機能を制限したForwarder。
Splunk Enterprise 6.0で非推奨となっているため現在では利用されなくなっています。
Universal ForwarderがLight Forwarderの置き換えとなっているようです。
ドキュメント内でたまに出てくるのですが、現在は使われていないものと思って良いと思います。
参考情報:
https://docs.splunk.com/Documentation/Splunk/9.2.0/Forwarding/Deployaforwarder
Intermediate Forwarder
他のForwarderから受け取ったデータを中継する役割に割り当てたForwarderのことを言います。
Universal ForwarderまたはHeavy ForwarderをIntermediate Forwarderとすることができます。
構成イメージになります。
中継させるユースケースについては色々とありますが、主には、下記のような場合が多いかと思います。
- セキュリティ要件として、プライベートネットワークからパブリックネットワークを経由してIndexerに送信する必要がある場合(Universal ForwarderとHTTPプロキシなどでも要件を満たせる場合もあります)
- データの転送中にデータのマスキング、変換、エンリッチメントが必要な場合
Universal Forwarder編セットアップ:
https://docs.splunk.com/Documentation/Forwarder/9.2.0/Forwarder/Configureanintermediateforwarder
Heavy Forwarder編セットアップ:
https://docs.splunk.com/Documentation/Splunk/9.2.0/Forwarding/Configureanintermediateforwarder
Intermediate Forwarder Benefits:
https://docs.splunk.com/Documentation/SVA/current/Architectures/Intermediaterouting
Deployment Server
Deployment ServerはForwarderを管理するためのサーバーになり、顧客側の環境にSplunk Enterprise をインストールして使います。
またDeployment ServerはForwarderとして動作させることはできません。
Forwarderのグルーピング、設定、アップデートなどの運用管理を一元的に行うことができます。
Forwarderが数台であれば問題ないと思いますが、例えば50台以上など管理する対象が増えてきた場合に、Deployment Serverをたてて管理することを検討します。
構成イメージになります。
また、Splunk Cloudを利用していて、Universal Forwarderを使ったデータ送信する際には、Universal Forwarder Credential Packageを各デバイスで設定する必要があります。
Deployment Serverがあれば、一括で配布・設定が可能になるので、便利になります。
Deployment ServerはForwarderからtcp/8089のインバウンドの開放と、Deployment ServerからSplunk CloudまたはSplunk Enterpriseへのtcp/9997のアウトバウンドの開放が必要になります。
https://docs.splunk.com/Documentation/Splunk/9.2.0/Updating/Deploymentserverarchitecture
以上、SplunkのForwarderについてのまとめになります。